﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework;

public class DayMessageScreen : GameScreen
{
    private Texture2D back, dark;
    private SpriteFont font, font2;
    int day;
    string title, text;

    public DayMessageScreen(int day)
    {
        Globals.IsPaused = true;
        IsPopup = true;
        this.day = day;
    }

    public override void LoadContent()
    {
        base.LoadContent();

        dark = GameSession.Content.Load<Texture2D>("Textures/dark");
        back = GameSession.Content.Load<Texture2D>("Textures/Screen/Post-it2");
        font = GameSession.Content.Load<SpriteFont>("SpriteFont1");
        font2 = GameSession.Content.Load<SpriteFont>("SpriteFont2");

        switch(day)
        {
            case 0:
                title = "Introdução - Ônibus";
                text = "Ufa, essa foi por pouco." + " \n " +
                    "Se não pegasse esse ônibus iria chegar atrasado no primeiro dia de aula na universidade.";
                break;
            case 1:
                title = "DIA 1 - Contrato";
                text = "Bem-Vindo ao seu primeiro dia de aula!!" + " \n " +
                    "Como todo aluno da UnitedValey, você deve no seu primeiro dia de aula " +
                    "ir até a secretaria e pedir o Contrato de Matrícula.";
                break;
            case 2:
                title = "DIA 2 - Caneta";
                text = "Você está atrasado, sua aula já comecou" + " \n " +
                    "Corra para não perder muita matéria!!";
                break;
            case 3:
                title = "DIA 3 - ";
                text = "";
                break;
        }
    }

    public override void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
    {
        HandleInput();
    }

    public override void Draw(GameTime gameTime)
    {
        base.Draw(gameTime);

        SpriteBatch spriteBatch = ScreenManager.SpriteBatch;

        spriteBatch.Begin();

        spriteBatch.Draw(dark, Vector2.Zero, Color.White);

        spriteBatch.Draw(back, new Vector2(Globals.ScreenWidth/2 - back.Width/2, Globals.ScreenHeight/2- back.Height/2), Color.White) ;

        spriteBatch.DrawString(font2, title, new Vector2(Globals.ScreenWidth / 2 - font2.MeasureString(title).X / 2, Globals.ScreenHeight / 2 - back.Height / 2 + 20), Color.Black);

        DrawString(spriteBatch, Globals.ScreenWidth / 2, Globals.ScreenHeight / 2 - back.Height / 2 + 20 + 50);

        spriteBatch.End();
    }

    public override void HandleInput()
    {
        //base.HandleInput();

        if (InputManager.IsActionTriggered())
        {
            Exit();
        }
    }

    private void DrawString(SpriteBatch spriteBatch, int x, int y)
    {
        string[] aux = text.Split(' ');

        string textLine = "";

        foreach (string str in aux)
        {
            if (font.MeasureString(textLine).X + font.MeasureString(str).X > 400 || str.Equals("\n") || str.Equals(aux.ElementAt(aux.Length - 1)))
            {
                if (str.Equals(aux.ElementAt(aux.Length - 1)))
                    textLine += str + " ";

                spriteBatch.DrawString(font, textLine, new Vector2(x - font.MeasureString(textLine).X / 2, y += 20), Color.Black);
                if (str.Equals("\n"))
                    spriteBatch.DrawString(font, "", new Vector2(x - font.MeasureString(textLine).X / 2, y += 20), Color.Black);

                textLine = "";
            }
            if (!str.Equals("\n"))
                textLine += str + " ";
        }
    }

    private void Exit()
    {
        Globals.FirstTime = false;
        Globals.IsPaused = false;
        ExitScreen();
    }
}